import { shopcart_list,
    shopcart_clear,
    shopcart_add,
    shopcart_sub,
   } from '../../utils/api'
export default {
    namespaced:true,//开启模块命名
    state:{
        shopcartlist:[]//存储加入购物车的数据
    },
    mutations:{
        add(state,params){//数量加1  参数一：整个state对象，对象二：在组建中调用该函数时传入的参数（可以时任何类型）
            //任何一个加入购物车的商品对象 都包含一下属性：userid,count,商品的基本属性等
            var good=state.shopcartlist.find((item)=>{
              return item.id==params.id;
            })
            if(good){//如果条件成立 说明 params这个商品对象 已经加入购物车了
              good.count++;
            }else{//如果执行else, 说明params这个商品不在购物车中 初次加入购物车
             var obj ={...params,count:1} ;
              state.shopcartlist.push(obj);
            }
           
          },
          sub(state,params){//数量减1
            var index=state.shopcartlist.findIndex((item)=>{
              return item.id==params.id;
            })
            if(index!=-1){//如果条件成立 说明 params这个商品对象 已经加入购物车了
              if(state.shopcartlist[index].count>1){
      
                state.shopcartlist[index].count--;
              }
              else{
                state.shopcartlist.splice(index,1)
              }
            }
            console.log('sub',state.shopcartlist);
      
          },
          clear(state){
            state.shopcartlist = [];
          },
          save_shopcartlist(state,params){//保存购物车列表(从服务器来的购物车列表)
            state.shopcartlist=params;
          },
    }, 
    getters: {//定义 计算方法(类似计算属性)
        totalPrice(state){
          return Number(state.shopcartlist.reduce((t,i)=>{
            return t+i.count*i.min_price;
          },0)).toFixed(2);
        },
        totalcount(state){
          return state.shopcartlist.reduce((t,i)=>{
            return t+i.count;
          },0)
        }
      },
    actions:{
        request_shopcartlist(store){
            var userinfo = localStorage.getItem('userinfo') ? JSON.parse( localStorage.getItem('userinfo') ) : {}
            shopcart_list( {userid: userinfo.id } ).then((res)=>{
              // console.log(res.data);
              // this.list = res.data.list;
              //存储购物车数据  到vuex
              store.commit('save_shopcartlist',res.data.list)
              // this.commit('save_shopcartlist',res.data.list)
          })
          },
          request_clear(store){
          
             //发请求, 清空购物车
             var userinfo = localStorage.getItem('userinfo') ? JSON.parse( localStorage.getItem('userinfo') ) : {};
            
             if( userinfo.id ){
               shopcart_clear( { userid:userinfo.id } ).then((res)=>{
                 store.commit('clear');
               })
             }
             
          },
          request_add(store,good){
             //发请求, 加入购物车
             var userinfo = localStorage.getItem('userinfo') ? JSON.parse( localStorage.getItem('userinfo') ) : {};
            
             if( userinfo.id ){
               shopcart_add( { userid:userinfo.id,goodid:good.id } ).then((res)=>{
                
                 store.commit('add',good)
                 
               })
             }
             //将需要加入购物车的商品往vuex中存一份
          },
          request_sub(store,good){
            //发请求, 加入购物车
            var userinfo = localStorage.getItem('userinfo') ? JSON.parse( localStorage.getItem('userinfo') ) : {};
            
            if( userinfo.id ){
              shopcart_sub( { userid:userinfo.id,goodid:good.id } ).then((res)=>{
               
                store.commit('sub',good)
              })
            }
            //将需要加入购物车的商品往vuex中存一份
         },
    }
}
